<?php
/*===========================================================================
* 작성자	: 하성수
* 용도		: ActionClass 사용시 데이터출력의 페이지 나누기를 용이하게 해준다.
* 연락처	: spacer.ha@gmail.com
* 사용제한 : 
	- 이 클래스 라이브러리 사용은 무료이나, 원작자의 정보나 주석을 삭제할 수 없습니다.(자동생성되는 뷰캐시내 주석 포함)
	- 원작자가 배포한 그대로 수정되지 않은 소스는 자유롭게 배포가 가능합니다.
	- 사용자환경에 맞게 소스를 수정하여 사용은 가능하나 수정된 소스나, 수정된 소스가 포함된 프로그램을 타인에게 제공할 수 없습니다.
	- 영리/비영리/개인/기업 관계없이 모두 사용할 수 있습니다.
* 안내   : 이 클래스는 Spac프레임워크에서 사용하도록 GET 변수가 "/param1/param2/param3..." 형식으로 세팅되어져 있습니다.
	
//--- 사용법 	
$this->Paging->initPaging($this->total_record, $this->blcSize, $this->pgSize, $this->page, $this->page_url);
$this->Paging->getPaging();	
print($this->pageString);
============================================================================*/
class Paging {
	
		var $pagingPath		= '../Spac/controller/Paging';
        var $pageSize, $blockSize;
        var $totalCount, $totalPage, $totalBlock;
        var $curPage, $curBlock;
        var $baseUrl;
        var $pageString;
		var $img_first;
		var $img_prev;
		var $img_next;
		var $img_last;

		function Paging() {}

        function initPaging($totRec, $blcSize, $pgSize, $page, $url) {        	
        		$conf_paging				= parse_ini_file($this->pagingPath."/Paging.ini");
                $this->curPage = $page;
                $this->pageSize = $pgSize;
                $this->blockSize = $blcSize;
                $this->totalCount = $totRec;
                $this->curBlock = ceil($this->curPage/$blcSize);
                $this->totalPage = ceil($totRec/$pgSize);
                $this->totalBlock = ceil($this->totalPage/$blcSize);
                $this->baseUrl = $url;
                $this->img_first			= $conf_paging['img_first'];
                $this->img_prev				= $conf_paging['img_prev'];
                $this->img_next				= $conf_paging['img_next'];
                $this->img_last				= $conf_paging['img_last'];
				if(!isset($this->img_first))	$this->img_first		= "◀";
				if(!isset($this->img_prev))	$this->img_prev			= "◁";
				if(!isset($this->img_next))	$this->img_next			= "▷";
				if(!isset($this->img_last))	$this->img_last			= "▶";
				$this->pageString				= '';
        }
        function encoding() {
                $this->getString = urlencode($this->getString);
        }
        function decoding() {
                $this->getString = urldecode($this->getString);
        }
        function getPaging() {
                $stPage = ($this->curBlock - 1) * $this->blockSize + 1;
                $edPage = $this->curBlock * $this->blockSize;
                $prevBlockPage = $stPage - 1;
                $nextBlockPage = $edPage + 1;
                if($this->curPage == 1) {
                        $this->pageString = '<a href=\'#\' title=\'더이상없습니다.\'>'.$this->img_first . '</a>&nbsp;&nbsp;';
                } else {
                        $this->pageString = '<a href=' . $this->baseUrl;
                        $this->pageString .= '/1' . $this->getString . ' title=\'첫페이지로\'>' . $this->img_first . '</a>&nbsp;&nbsp;';
                }
                if($this->curBlock == 1) {
                        $this->pageString  .= '<a href=\'#\' title=\'더이상없습니다.\'>'.$this->img_prev . '</a>&nbsp;&nbsp;';
                } else {
                        $this->pageString  .= '<a href=' . $this->baseUrl;
                        $this->pageString  .= '/' . $prevBlockPage . $this->getString;
                        $this->pageString  .= ' title=\'이전'.$this->blockSize.'페이지 보기\'>' . $this->img_prev . '</a>&nbsp;&nbsp;';
                }
                for($i=$stPage; $i <= $edPage && $i <= $this->totalPage; $i++) {
                        if($i == $this->curPage) {
                                $this->pageString .= '&nbsp;<b>' . $i . '</b>&nbsp;';
                        } else {
                                $this->pageString .= '<a href=' . $this->baseUrl;
                                $this->pageString .= '/' . $i . $this->getString;
                                $this->pageString .= ' title=\''.$i.'페이지로 이동\'>&nbsp;' . $i . '&nbsp;</a>';
                        }
						if($i<$edPage && $this->totalPage>$i) {
							$this->pageString .= '|';
						}
                }
                if($this->curBlock == $this->totalBlock) {
                        $this->pageString  .= '&nbsp;&nbsp;<a href=# title=\'더이상없습니다.\'>' . $this->img_next.'</a>';
                } else {
                        $this->pageString .= '&nbsp;&nbsp;<a href=' . $this->baseUrl;
                        $this->pageString .= '/' . $nextBlockPage . $this->getString;
                        $this->pageString .= ' title=\'다음'.$this->blockSize.'페이지 보기\'>' . $this->img_next . '</a>';
                }
                if($this->curPage == $this->totalPage) {
                        $this->pageString .= '&nbsp;&nbsp;<a href=# title=\'더이상없습니다.\'>' . $this->img_last.'</a>';
                } else {
                        $this->pageString .= '&nbsp;&nbsp;<a href=' . $this->baseUrl;
                        $this->pageString .= '/' . $this->totalPage . $this->getString;
                        $this->pageString .= ' title=\'마지막페이지로이동.\'>' . $this->img_last . '</a>';
                }
                if($this->totalPage<2) {
                	$this->pageString = '';
                }
                return $this->pageString;
        }
}
?>